﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Financeiro.Model;
using System.Threading;
using System.Globalization;

namespace Financeiro
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!((Page)System.Web.HttpContext.Current.CurrentHandler).IsPostBack)
            {
                carregaAnos();
                Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-BR");
            }
        }

        private void carregaAnos()
        {
            for (int i = DateTime.Now.Year; i >= 2000; i--)
            {
                ListItem obj = new ListItem();
                obj.Text = i.ToString();
                obj.Value = i.ToString();
                drpAno.Items.Add(obj);
            }
        }

        private void buscarPagamentos()
        {
            // armazena no log
            if (Session["idAdmin"] != null)
            {
                LogModel.visualizarFolhaPagamentoLog((int)Session["idAdmin"]);
            }

            FolhaPagamentosModel folhaPagamentos = new FolhaPagamentosModel(Convert.ToInt16(drpMes.SelectedValue), Convert.ToInt16(drpAno.SelectedValue));
            DataTable dt = folhaPagamentos.buscarFolha();
            atualizarDataGrid(dt);
        }



        protected void bntBuscar_Click(object sender, EventArgs e)
        {
            buscarPagamentos();
            
        }

        private void atualizarDataGrid(DataTable dt)
        {
            // início do workaround para sempre exibir o cabeçalho
            if (dt.Rows.Count == 0)
            {
                Response.Write("<script language='javascript'>alert('Não há dados!');</script>");
                // limpa o datasource
                grdFolha.DataSource = null;
                grdFolha.DataBind();

            }
            else
            {
                grdFolha.DataSource = dt;
                grdFolha.DataBind();
            }
        }

        protected void bntGerar_Click(object sender, EventArgs e)
        {

            // armazena no log
            if (Session["idAdmin"] != null)
            {
                LogModel.folhaPagamentoLog((int)Session["idAdmin"]);
            }
            // pede para gerar a folha de pagamentos
            FolhaPagamentosModel folhaPagamentos = new FolhaPagamentosModel(Convert.ToInt16(drpMes.SelectedValue), Convert.ToInt16(drpAno.SelectedValue));

            int statusFolha = folhaPagamentos.gerarFolhaPagamento();
            
            // retorna a mensagem de status
            string mensagem = FolhaPagamentosModel.retornarMensagem(statusFolha);
            
            // exibe a mensagem
            Response.Write("<script language='javascript'>alert('" + mensagem + "');</script>");
            
            if (statusFolha == 3)
            {
                buscarPagamentos();
            }
 
        }
    }
}
